package com.tbit.manager.api.dto;

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * 交易订单统计DTO
 *
 * @AUTHOR: zhangtianyou
 **/
@Data
public class TransactionOrderIncomeDTO implements Serializable {

    /**
     * 运营区域
     */
    String accountIds;

    /**
     * 运营区域
     */
    String accountId;

    /**
     * 归属区域
     */
    String accountName;

    /**
     * 品牌ID
     */
    Integer brandId;
    /**
     * 交易记录id
     */
    private Long transactionId;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 操作人ID
     */
    private Integer operatorId;
    /**
     * 交易类型
     * 1：押金充值
     * 2：押金退款
     * 3：余额充值
     * 4：余额退款
     * 5：充值结束订单
     * 6：欠款补交
     * 7：骑行退款
     * 8：购买骑行卡
     * 9：骑行卡退款
     * 10：购买免押卡
     * 11：免押卡退款
     * 12：购买会员卡
     * 13：会员卡退款
     * 14：购买优惠券套餐
     * 15优惠券套餐退款
     */
    Integer transactionType;

    /**
     * 业务平台订单编号
     */
    String businessNO;

    /**
     * 商户订单编号
     */
    String transactionNO;

    /**
     * 手机号
     */
    String phone;
    /**
     * 交易金额（元）
     */
    private Double transactionMoney;
    /**
     * 操作人手机号码
     */
    private String operatorPhone;
    /**
     * 已退款金额（元）
     */
    private Double refundMoney;
    /**
     * 发起时间
     */
    private Date launchTime;
    /**
     * 交易时间
     */
    private Date payTime;
    /**
     * 操作人
     */
    private String operatorName;
    /**
     * 交易时间类型 1 发起时间 2交易时间
     */
    @NotNull(message = "交易时间类型不能为空")
    Integer transactionTimeType;
    /**
     * 开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "开始时间不能为空")
    Date startTime;
    /**
     * 结束数据
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "结束时间不能为空")
    Date endTime;

    /**
     * 收支类型 1：收入 2：支出
     */
    Integer incomeType;

    /**
     * 支付平台 1：微信，2：支付宝，3：汇付
     */
    Integer payPlatform;

    /**
     * 交易状态 1：成功 2：失败
     */
    Integer transactionState;
    /**
     * 用户名
     */
    private String userName;
    /**
     * 页码
     */
    Integer pageNO;
    /**
     * 行数
     */
    Integer rowCount;
    /**
     * 令牌
     */
    @NotNull(message = "令牌不能为空")
    String token;
}
